﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Cinch;
using System.ComponentModel;

namespace Anata.Client
{
    /// <summary>
    /// Represents a single Image ViewModel
    /// </summary>
    public class KonsumenThumbnailViewModel : ViewModelBase
    {
        #region Data
        //private ViewMode currentViewMode = ViewMode.AddMode;

        #region Data.Primitives
        private Int32 idKonsumen;
        private String nama;
        private String alamat;
        private String telepon;
        private String jenisKelamin;
        private DateTime? tanggalLahir;
        #endregion

        //private IEnumerable<DataWrapperBase> cachedListOfDataWrappers;

        #region Data.Rules
        #endregion

        #region Data.VMs
        #endregion

        #region Data.Services
        #endregion

        #endregion

        #region Constructor
        public KonsumenThumbnailViewModel ()
	    {
            #region Constructor.SetupServices
            #endregion

            #region Constructor.SetupCommands
            #endregion

            #region Constructor.SetupDataWrappers
            #endregion

            //fetch list of all DataWrappers, so they can be used again later without the
            //need for reflection
            //cachedListOfDataWrappers =
            //    DataWrapperHelper.GetWrapperProperties<KonsumenThumbnailViewModel>(this);

            #region Constructor.SetupValidationRules
            #endregion
			
			#region Constructor.SetupVMs
			#endregion

	    }
        #endregion

        #region Static
        #endregion

        #region Public Properties

        #region Public.Commands
		#endregion

		#region Public.ViewMode
        #endregion

		#region Public.Data
        /// <summary>
        /// </summary>
        static PropertyChangedEventArgs idKonsumenChangeArgs =
	        ObservableHelper.CreateArgs<KonsumenThumbnailViewModel>(x => x.IdKonsumen);
        public Int32 IdKonsumen
        {
	        get { return idKonsumen; }
	        set
	        {
		        idKonsumen = value;
		        NotifyPropertyChanged(idKonsumenChangeArgs);
	        }
        }
        /// <summary>
        /// </summary>
        static PropertyChangedEventArgs namaChangeArgs =
	        ObservableHelper.CreateArgs<KonsumenThumbnailViewModel>(x => x.Nama);
        public String Nama
        {
	        get { return nama; }
	        set
	        {
		        nama = value;
		        NotifyPropertyChanged(namaChangeArgs);
	        }
        }
        /// <summary>
        /// </summary>
        static PropertyChangedEventArgs alamatChangeArgs =
	        ObservableHelper.CreateArgs<KonsumenThumbnailViewModel>(x => x.Alamat);
        public String Alamat
        {
	        get { return alamat; }
	        set
	        {
		        alamat = value;
		        NotifyPropertyChanged(alamatChangeArgs);
	        }
        }
        /// <summary>
        /// </summary>
        static PropertyChangedEventArgs teleponChangeArgs =
            ObservableHelper.CreateArgs<KonsumenThumbnailViewModel>(x => x.Telepon);
        public String Telepon
        {
            get { return telepon; }
            set
            {
                telepon = value;
                NotifyPropertyChanged(teleponChangeArgs);
            }
        }
        /// <summary>
        /// </summary>
        static PropertyChangedEventArgs jenisKelaminChangeArgs =
            ObservableHelper.CreateArgs<KonsumenThumbnailViewModel>(x => x.JenisKelamin);
        public String JenisKelamin
        {
            get { return jenisKelamin; }
            set
            {
                jenisKelamin = value;
                NotifyPropertyChanged(jenisKelaminChangeArgs);
            }
        }
        /// <summary>
        /// </summary>
        static PropertyChangedEventArgs tanggalLahirChangeArgs =
            ObservableHelper.CreateArgs<KonsumenThumbnailViewModel>(x => x.TanggalLahir);
        public DateTime? TanggalLahir
        {
            get { return tanggalLahir; }
            set
            {
                tanggalLahir = value;
                NotifyPropertyChanged(tanggalLahirChangeArgs);
            }
        }
        #endregion

        #region Public.Cached Collection
        #endregion

        #region Public.DataVM
        #endregion

        #endregion

        #region Command Handlers
        #endregion

        #region Private Methods
        #endregion

        #region Overrides
        public override string ToString()
        {
            return String.Format("KonsumenThumbnailViewModel {0}", this.Nama);
        }
        #endregion

        #region EditableValidatingViewModelBase overrides
        #endregion
    }
}
